home *** CD-ROM | disk | FTP | other *** search
- #ifndef _H_express
- #define _H_express
-
- #define MAXBYTE 255
-
- #define MAXWORD 65535
-
- #define VARSIZE 32 // number of characters in a variable name
-
- #define NUMVARS 50 // number of variables to store
-
- #define CLASS_NULL 0
- #define CLASS_BYTE 1
- #define CLASS_WORD 2
- #define CLASS_LONG 3
- #define CLASS_PTR 4
-
- enum
- {
- TOKEN_END = 0,
- TOKEN_PLUS,
- TOKEN_MINUS,
- TOKEN_MULT,
- TOKEN_DIV,
- TOKEN_RPAREN,
- TOKEN_LPAREN,
- TOKEN_CONST,
- TOKEN_VAR,
- TOKEN_AND,
- TOKEN_OR,
- TOKEN_CARET,
- TOKEN_MOD,
- TOKEN_LSHIFT,
- TOKEN_RSHIFT,
- TOKEN_NOT,
- TOKEN_EQUAL,
- TOKEN_LESSTHAN,
- TOKEN_GREATERTHAN,
- TOKEN_LESSTHANOREQUAL,
- TOKEN_GREATERTHANOREQUAL,
- TOKEN_NOTEQUAL,
- TOKEN_LOGICALNOT
- };
-
- #define ERROR_RES_STR (129)
-
- typedef enum
- {
- kError = 0, // used to signal warning or error
- kWarning
- }ErrorType;
-
- enum
- {
- NOERR = 0,
-
- ERROR_SYNTAX,
- ERROR_DIVZERO,
- ERROR_MISBALPAREN,
- ERROR_NOSUCHVAR,
- ERROR_INVALVAR,
- ERROR_MISSINGPARAM,
- ERROR_MACRO,
- ERROR_MACROPARAM,
- ERROR_NOSUCHMACRO,
- ERROR_MACROPARMSIZE,
- ERROR_MACROPARMCOUNT,
- ERROR_PREVDEFINED,
- ERROR_TOOBIG,
- ERROR_FILENOTFOUND,
-
- ERROR_FATAL,
-
- ERROR_HASHFULL = ERROR_FATAL,
- ERROR_GROWCHUNK,
- ERROR_MEMORY,
- ERROR_TOOMANYERRORS,
-
- ERROR_EOL,
- ERROR_EOF,
-
- ERROR_SAVING, // generic message for filei/o failure
-
- FIRST_WARNING,
-
- WARNING_PREFS = FIRST_WARNING,
- WARNING_RESPSEUDO,
- WARNING_UNUSEDPARAM,
-
- ERROR_COUNT
- };
-
- #define digit(x) ((x >= '0' && x <= '9' ) ? x- '0' : toupper(x) - '7' )
-
- typedef unsigned char token;
-
- struct VARIABLE
- {
- char name[VARSIZE];
- long value;
- };
-
- // Prototypes
-
- OSErr TokenizeExpression( token * * t , const char * * s );
-
- void AddToken(token * * stream, token t); /* add a token to the stream */
- OSErr AddConst(token * * stream, const char * * s ); /* add a constant */
- void AddWord ( token * * stream, long i );
- void AddLong ( token * * stream, long i );
-
- long DecLong ( const char * * s );
- long HexLong ( const char * * s );
- long BinLong ( const char * * s );
- long ASCIILong ( const char * * s ,OSErr *error);
-
- OSErr AddVar(token * * t, const char * * s ); /* add a varaible to the stream */
- void AddPtr(token * * t, long * p);
-
- OSErr EvalExpression ( ULONG * lvalue , token ** p );
- OSErr EvalFactor ( ULONG * lvalue, token * * p );
- OSErr EvalNumber ( ULONG * lvalue, token * * p );
- OSErr EvalConst( ULONG * lvalue, token * * p );
- OSErr EvalVar( ULONG * lvalue, token * * p );
- OSErr DoExpr(Ptr *isPtr, ULONG *answer);
-
- #endif
-